package controller

import (
	"github.com/gin-gonic/gin"
	"net/http"
	"wish_go/src/main/com/ajie/common"
	"wish_go/src/main/com/ajie/result"
)

// @Tags 文件上传
// @Summary 上传图片
// @Accept multipart/form-data
// @Produce json
// @Param file formData file true "表单文件名"
// @Success 200 {object} result.Result
// @Router /upload/image [post]
func UploadImage(ctx *gin.Context) {
	// 获得上传的文件对象
	file, err := ctx.FormFile("file")
	if err != nil {
		result.Error(ctx, 500, "文件上传失败: 文件获取失败")
		return
	}
	fileName, err := common.Upload(file)
	if err != nil {
		result.Error(ctx, 200, fileName)
		return
	}
	result.SuccessData(ctx, "文件上传成功", fileName)
}

func UploadImages(ctx *gin.Context) {
	// 获得上传的文件对象
	multipartForm, err := ctx.MultipartForm()
	if err != nil {
		result.Error(ctx, 500, "文件上传失败: 文件获取失败"+err.Error())
		return
	}
	// 获取文件
	files := multipartForm.File["file"]
	// 迭代文件
	var i = 0
	strs := [...]string{}
	for _, file := range files {
		fileName, err := common.Upload(file)
		if err != nil {
			result.Error(ctx, 500, "上传失败："+err.Error())
			return
		}
		strs[i] = fileName
		i += 1
	}
	result.SuccessData(ctx, "文件上传成功", strs)
}

// @Tags 文件上传
// @Summary 上传编辑器图片
// @Accept multipart/form-data
// @Produce json
// @Security ApiKeyAuth
// @Param editor-file formData file true "表单文件名"
// @Success 200 {object} object "{"errno":0, "data": { "url": "上传到文件服务器的文件名", "alt": "原文件名" } }"
// @Failure 500 {object} object "{ "errno":-1, "message": "异常信息" }"
// @Router /editor/upload/image [post]
func EditorImage(ctx *gin.Context) {
	// 获得上传的文件对象
	file, err := ctx.FormFile("editor-file")
	if err != nil {
		ctx.JSON(http.StatusOK, gin.H{"errno": -1, "message": "文件上传失败: 文件获取失败" + err.Error()})
		return
	}
	fileName, minioErr := common.Upload(file)
	if minioErr != nil {
		ctx.JSON(http.StatusOK, gin.H{"errno": -1, "message": "文件上传失败: " + minioErr.Error()})
		return
	}
	ctx.JSON(http.StatusOK, gin.H{
		"errno": 0,
		"data":  gin.H{"url": fileName, "alt": file.Filename},
	})
}
